---
slug: frontend-looking-for-jobs
title: 前端工程师到底要学到什么程序才能去找工作？成功面试的必备要素与回答技巧
author: 峰华
author_title: 前端工程师 / B站UP主
author_url: https://github.com/zxuqian
author_image_url: https://tvax3.sinaimg.cn/crop.0.0.1080.1080.180/b2745d44ly8g8s4muqeggj20u00u0n0k.jpg?KID=imgbed,tva&Expires=1582389585&ssig=EvXmyu%2FXsX
description:
tags: [前端, 面试]
---

好多人都想知道，前端工程师到底要需要掌握什么技能、到什么程度，才能去找工作？最简单的答案：

> 把 html、css、 js 基础学扎实，再掌握 vue 或 react 前端框架之一就可以了。

真的是这样吗？技术上看似乎没问题，但是找工作不只要从技术上下手，还要从个人目标和公司的招人标准综合进行考量。那么接下来，我们从这几个方面来分析一下，前端工程师找工作的必要条件，然后给大家分享一套有逻辑、有结构的面试回答技巧。

<!-- truncate -->

## 个人目标

现在我们的教育并没有太着重于个人目标和职业规划的设定，但找工作与其关系特别大。如果你想找一个大厂，那么准备方向就跟创业公司完全不一样。我们分别来看一下这两种情况。

### 大厂

大厂可能更看重你的 `html`、`css` 和 `JavaScript` 基础，以及`数据结构`、`算法`和`计算机网络`。你的准备方向就应该是这些基础方面的东西。另外还有一些原理方面的知道，比如你要做 `vue` 或者 `react` 开发，那就要知道 `virtual dom` 和 `diff 算法`的原理。

### 创业公司

如果你的目标是创业公司（这种公司的发展前景不可预测，可能大展宏图，也可能半途而废），你需要有大量的实战经验，因为创业公司为了抢占市场，产品的开发进度一般都会特别紧张，你需要去了就能够立刻干活；而理论方面的东西则会关注的少一些。针对面试，你需要去准备相关技术（比如 React 或 Vue) 的实战项目经验。

所以要想知道学到什么程度才能去找工作，首先得明确一下你的目标，**是想去大厂，还是去创业公司，然后分别进行准备和突破**。

## 公司要求

接下来再看一下公司的招聘要求，好多公司都写的特别专业、全面，除了基本语法、框架外，还要求有兼容性调整、性能优化、可视化经验，或者是掌握一些小众框架。这些招聘信息其实描述的是最佳人选，几乎在 100 个里面才能挑出 1 个来，**而这种大牛级别的人自己也向往更好的工作机会，所以可能根本不会跟你有竞争关系**。公司这么写招聘要求目的只有一个，就是找一个技能越全的人越好。

事实上，你只需满足要求的百分之**80%**，**70%**，甚至 **50%** 都有可能获得这份工作机会，因为面试不光看技术，还要看眼缘、人缘：如果面试官觉得你们投缘的话，你即使有不会的问题，他也会主动引导你帮你回答上来；要是不投缘（_有些比较 250 的面试官_），那就算你会的再多，他也会觉得你很菜（_你不懂他懂的_）。所以说那些招聘要求就只作为参考就好了，可以作为你以后的学习路线。不过这些技能还是掌握的越多越好，技多不压身，你可以一边面试一边准备，这样也不会互相影响。

## 技术能力

分析完外界的因素之后，来看一下咱们需要具体掌握哪些技术。

### 基础

作为一名前端工程师，`html、css、JavaScript` 基础是一定要掌握牢固的，所有的语法点都必须要掌握，然后还要熟识面试必考的题，比如 `ES6 及后面的新特性`、`原型链`、`Event Loop` 等等。这些不是从学校学来的，而是为了面试专门突击准备的，需要反复的去看，去研究，最后把它们理解并记住。

### 框架

掌握这些基础之后，就需要看一下前端比较火爆的框架，`react` 和 `vue`。大厂用 React 的比较多，中小型公司用 vue 的比较多，当然这也不是绝对的。据我目前的经验来看，React 的薪水还是比较高的，不过看你自己喜好，喜欢做什么就做什么，从这两个框架中选一个深入去学，后面有时间再去研究另外一个。具体学习和准备方法可以

- 先学基础用法，再学高级用法，最后掌握框架原理，比如：`React / Vue`，`Redux / Vuex` ，因为面试官通常喜欢问这方面的问题。针对这些一定要去看看别人的总结，然后自己研究一下，会更容易理解并记住。了解原理后，有时间再去研究一下源码，对于面试会更有帮助。
- 理论准备完之后，实战肯定也少不了，无论是校招还是社招，无论是面大厂还是面小厂，都需要应聘者有实战经验。因为光会纸上谈兵，编码能力不够也不会有公司愿意去培养。实战就建议大家自己去**网上找一些项目的灵感，然后动手去做一下**。刚开始可能会觉得自己技术不够，也没有一个全局的概念，这些都是正常的过程，可以跟一些课程或者书籍，或者是网上的一些资源，学习一下，免费或收费的都可以。**收费的好处就是它有一个完整的体系，让你从全局上有一条路径顺着走下去，就能完成一个目标**。而免费资源需要你有充裕的时间，因为在遇到问题的时候，需要你一点一点去研究。不过在完成之后，回顾一下你的项目开发过程，也会在脑子里形成体系，再把之前看过的所有资料整理一下，也就学会了，只是时间上会比较长。
- 有些公司的实战经验要求的比较丰富，比如兼容性调整和性能优化。这种经验就需要你在开发项目中，刻意去创造问题的场景，然后解决它。比如说兼容性调整，你就得在项目中体验一下不同浏览器对于 JS 和 CSS 特性的支持程度，然后按需调整。而性能优化则就需要从网络请求、图片加载、动画和代码执行效率下手。

这些你搞懂了之后，基本上百分之七八十的公司都可以面过去。

## 软技能

上面说的是必备的硬性技术技能，还有一些必要的软技能，用以展示个人性格和工作能力。最重要的一项软技能是沟通能力。

### 沟通能力

沟通能力，对于面试或是汇报工作都是必须的。它跟你的自信程度是完全挂钩的，你只有自信之后才能有更好的沟通和表达能力，如果唯唯诺诺，低三下四，那么在面试或汇报工作的时候就会支支吾吾，颠三倒四。

举个例子：好多人，包括我本人，在面试的时候都会紧张，而我又属于那种特别紧张的，有些技术可能本来是熟悉的，但面试的时候人家换一个问法、或者气氛比较紧张的话，大脑就会一片空白，想说也说不出来，特别吃亏。要解决这个问题，**就要相信自己就是什么都会，面试官也不见得比自己会的多，然后面试前事先准备好常见面试题的答案，以及过往的工作经验，可以极大的增加自信。**当准备面试题的时候，可以采用框架的形式进行组织，下边介绍两个常用框架用来回答工作经验类和原理类的问题。

### STAR 框架

对于工作经验相关的问题，可以使用框架组织回答，比如亚马逊北美那边面试会提前会告诉你，用一个叫**STAR**的框架回答问题：

- **S** 是说 situation，事件/问题发生的场景。
- **T** 指的是 task，在这个场景下你要解决的问题或者要完成的任务。
- **A** 是 action，行动，要解决上边那些 tasks，你需要付出哪些行动？_比如说第 1 步先去调试代码，然后第 2 步再去检查一下哪个变量出问题了_，描述清楚每一步行动。
- **R** 是 result，结果，这些行动有了什么样的结果，是成功了还是失败了，对你来说有什么帮助或者增长了什么教训。又或者往大里了说，给公司带来了什么效益。

这样一整套就比较有逻辑。

### 原理回答框架

再说原理概念类的问题的回答，也是要有一套逻辑的，就比如说解释一下某某技术的工作原理，那么你要：

- 解释一下这个技术是干什么的(**What**)。
- 它有什么好处(**Why**)。
- 分析一下这个技术内部用了哪些核心算法或机制，从外到里，或者由浅入深的给它剖析出来。如果是能拆解的技术，那就把每个部分或者组件的作用简单的描述一下（**How**)。
- 最后再给他总结一下这个技术的核心部分。

例如，你要回答 react 工作原理的问题：

- 可以先说一下 React 是做什么的`它是一个构建用户界面的库`。
- 然后它使用了（从浅一点的方面） `virtual dom` 把组件结构放在了内存中，用于提升性能。
- 组件刷新的时候又使用了 diff 算法，根据状态的变化去寻找并更新受影响的组件（然后继续深入 diff 算法...）。
- 再底层一些， React 分为了 `React 核心`和 `React-dom`，核心负责维护组件结构，React-dom 负责组件渲染，而 React 核心又使用了 `Fiber` 架构等等等等。
- 如果你深入阅读过它的源代码也可以再结合源码给面试官详细介绍一下，最后再总结一下 react 加载组件、渲染组件和更新组件的过程，这个就是它的工作原理。

## 总结

这些就是前端工程师要学到什么程度才能去找工作、以及怎么找工作的一些个人看法。你需要：

1. 设定个人目标。
2. 辩证看待公司的招聘要求。
3. 掌握硬技能和软技能（沟通能力）。
4. 使用 STAR 框架和 WWH 框架组织面试回答。

按照这些方向去准备的话，一定可以会找到满意的工作。如果找到了还请记得回来炫耀一下~如果觉得文章有帮助请点个赞吧~感谢！
